import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * La clase Bala se utiliza para simular una bala al momento de disparar
 */
public class Bala  extends Mover
{
    private int dir; 
    
    Bala(int direccion)
    {
        dir=direccion; 
        setRotation(dir);
    }
    
    public void act() 
    {
         move();
         desapareceObjeto();
    }    
    
    /**
     * Este metodo se utiliza al momento de que encuentre algun objeto como un tanque 
     * enemigo o una pared se desaparesca con ella
     */    
    public void desapareceObjeto()
    {
        Fondo miMundo=(Fondo)getWorld();
        Actor tanque=getOneIntersectingObject(Tank1.class);
        if(tanque != null)
        {
            explosion(tanque.getX(),tanque.getY());
            getWorld().removeObject(tanque);
            Greenfoot.playSound("muereEnemigo.wav");
            quitaDelContador();
            miMundo.incrementaContador();
        }
        
        Actor wall=getOneIntersectingObject(Muro.class);
        if(wall != null)
            getWorld().removeObject(wall);
        
        Boss boss=(Boss)getOneIntersectingObject(Boss.class);
        if(boss != null)
            boss.bajaVida();
        
        if(bordeMundo() || wall!=null || tanque!= null || getX()>560 || boss!=null)
            getWorld().removeObject(this);
       
    }

    /** 
     * Quita del contador enemigos al momento de que encuentra algun enemigo
     */       
    public void quitaDelContador()
    {
        Fondo miFondo=(Fondo)getWorld();
        miFondo.descuentaEnemigo(1);
    }        
    
    /**
     * Crea un objeto explosion y simula una
     */
    public void explosion(int x, int y)
    {
        Actor ex=new Explosion();
        getWorld().addObject(ex,x,y);
    }
}